/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package redinftel.formularios;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.TreeSet;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import redinftel.entidades.Publicacion;
import redinftel.entidades.Usuario;
import redinftel.sesiones.PublicacionFacadeRemote;
import redinftel.sesiones.UsuarioFacadeRemote;

/**
 *Clase que permite publicar en el muro comentarios
 * y tambien se pueden borrar los comentarios de los usuarios que comentan en mi perfil
 * @author Six Degrees Team
 */
@ManagedBean
@SessionScoped
public class PublicarBean implements Serializable {

    @EJB
    private PublicacionFacadeRemote publicacionFacade;
    @EJB
    private UsuarioFacadeRemote usuarioFacade;

    public void setPublicacionFacade(PublicacionFacadeRemote publicacionFacade) {
        this.publicacionFacade = publicacionFacade;
    }

    public void setUsuarioFacade(UsuarioFacadeRemote usuarioFacade) {
        this.usuarioFacade = usuarioFacade;
    }

    /** Creates a new instance of PublicarBean */
    public PublicarBean() {
          ChangeLocaleBean.cambiar();
    }
    public PublicarBean(boolean movil){
        
    }
    private static final String USUARIO = "usuario";
    private String titulo;
    private String contenido;
    private int multimedia;
    private List<Publicacion> listaPublicaciones;
    private List<Publicacion> listaPublicacionesGeneral;

    public List<Publicacion> getListaPublicacionesGeneral() {
        FacesContext con = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) con.getExternalContext().getSession(false);
        String idAmigo = (String) con.getExternalContext().getSessionMap().get("idAmigo");
        Usuario yo = new Usuario((Usuario) session.getAttribute(USUARIO));
        listaPublicacionesGeneral = publicacionFacade.find10UltimasPublicaciones(yo);

        return listaPublicacionesGeneral;
    }
/**
 *
 * @param listaPublicacionesGeneral
 */
    public void setListaPublicacionesGeneral(List<Publicacion> listaPublicacionesGeneral) {
        this.listaPublicacionesGeneral = listaPublicacionesGeneral;
    }

 public List<Publicacion> getListaPublicaciones() {
     FacesContext con = FacesContext.getCurrentInstance(); 
     String idAmigo = (String) con.getExternalContext().getSessionMap().get("idAmigo");
     return getListaPublicaciones(idAmigo);
 }
 /**
 *
 * @return listaPublicaciones
 */
    public List<Publicacion> getListaPublicaciones(String idAmigo) {
            
        Usuario nuevo = usuarioFacade.find(new BigDecimal(idAmigo));

        listaPublicaciones = publicacionFacade.findPublicacionesDeUsuario(nuevo);

        return listaPublicaciones;
    }

    public void setListaPublicaciones(List<Publicacion> listaPublicaciones) {
        this.listaPublicaciones = listaPublicaciones;
    }
/**
 *
 * @return el contenido
 */
    public String getContenido() {
        return contenido;
    }

    public void setContenido(String contenido) {
        this.contenido = contenido;
    }
/**
 *
 * @return multimedia
 */
    public int getMultimedia() {
        return multimedia;
    }

    public void setMultimedia(int multimedia) {
        this.multimedia = multimedia;
    }
/**
 *
 * @return tipo
 */
    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
/**
 *
 * @return titulo de la publicacion
 */
    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }
    private String tipo;

    public String nuevaPublicacion() {
        FacesContext con = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) con.getExternalContext().getSession(false);
        String idAmigo = (String) con.getExternalContext().getSessionMap().get("idAmigo");
        Usuario yo = new Usuario((Usuario) session.getAttribute(USUARIO));


        return nuevaPublicacion(idAmigo, yo, titulo, contenido);
       }
    
    public String nuevaPublicacion(String idAmigo, Usuario yo, String miTitulo, String miContenido){
        Publicacion publicacion = new Publicacion();
        Usuario nuevo = usuarioFacade.find(new BigDecimal(idAmigo));

        String id = "1";
        List<String> lista = publicacionFacade.findPK();
        TreeSet<Integer> listaNumerica = new TreeSet<Integer>();
        for (String s : lista) {
            listaNumerica.add(Integer.parseInt(s));
        }
        int max = listaNumerica.last();
        if (listaNumerica != null) {
            int idInt = max + 1;
            id = String.valueOf(idInt);
        }
        publicacion.setIdPublicacion(id);
        publicacion.setFecha(new Date());
        publicacion.setTitulo(miTitulo);
        publicacion.setContenido(miContenido);
        publicacion.setUsuario(nuevo);
        publicacion.setUsuario1(yo);
        publicacion.setMultimedia(null);
        publicacion.setTipo("mensaje");

        publicacionFacade.create(publicacion);

        return "perfil";
    }
/**
 *
 * @return la vista perfil en el caso de borrar perfectamente la publicacion
 */
    public String borrarPublicacion(){
        FacesContext con = FacesContext.getCurrentInstance();
        String id = (String) con.getExternalContext().getRequestParameterMap().get("id");

        Publicacion publi = publicacionFacade.find(id);
        publicacionFacade.remove(publi);

        return "perfil";
    }
}
